package cn.itsource.ymcc.domain;

import com.baomidou.mybatisplus.enums.IdType;
import java.math.BigDecimal;
import java.util.Date;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * <p>
 * 
 * </p>
 *
 * @author gwk
 * @since 2023-03-17
 */
@TableName("t_kill_course")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class KillCourse extends Model<KillCourse> {

    private static final long serialVersionUID = 1L;
    //秒杀状态:0待发布，1秒杀中，2秒杀结束

    public static final Integer WAIT_PUBLISH = 0;
    public static final Integer BEFORE_KILLING = 3;
    public static final Integer KILLING = 1;
    public static final Integer KILL_END = 2;


    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * 课程名字
     */
    @TableField("course_name")
    private String courseName;
    /**
     * 对应的课程ID
     */
    @TableField("course_id")
    private Long courseId;
    @TableField("kill_price")
    private BigDecimal killPrice;
    /**
     * 库存
     */
    @TableField("kill_count")
    private Integer killCount;
    /**
     * 每个人可以秒杀的数量,默认1
     */
    @TableField("kill_limit")
    private Integer killLimit;
    /**
     * 秒杀课程排序
     */
    @TableField("kill_sort")
    private Integer killSort;
    /**
     * 秒杀状态:0待发布，1秒杀中，2秒杀结束
     */
    @TableField("publish_status")
    private Integer publishStatus;
    @TableField("course_pic")
    private String coursePic;
    /**
     * 秒杀开始时间
     */
    @TableField("start_time")
    @JsonFormat(pattern="YYYY-MM-dd HH:mm:ss")
    private Date startTime;
    /**
     * 秒杀结束时间
     */
    @TableField("end_time")
    @JsonFormat(pattern="YYYY-MM-dd HH:mm:ss")
    private Date endTime;
    /**
     * 创建时间
     */
    @TableField("create_time")
    @JsonFormat(pattern="YYYY-MM-dd HH:mm:ss")
    private Date createTime;
    /**
     * 发布到Redis的时间
     */
    @TableField("publish_time")
    @JsonFormat(pattern="YYYY-MM-dd HH:mm:ss")
    private Date publishTime;
    /**
     * 老师，用逗号隔开
     */
    @TableField("teacher_names")
    private String teacherNames;
    /**
     * 下线时间
     */
    @TableField("offline_time")
    private Date offlineTime;
    @TableField("activity_id")
    private Long activityId;
    @TableField("time_str")
    private String timeStr;

    @TableField(exist = false)
    private String killCode;

    /**
     * 当前时间 距离秒杀结束的时间 毫秒值Long
     * @return
     */
    public Long getTimeDiffMill() {
        return  (endTime.getTime()-new Date().getTime())/1000;

    }

    /**
     *  是否正在秒杀中
     * @return
     */
    public Boolean getKilling(){
        //如果当前时间 > 开始 同时小 结束 就是正在秒杀
        return new Date().getTime() > startTime.getTime() && new Date().getTime()<endTime.getTime();
    }

    /**
     * （秒杀状态的名字）
     * @return
     */
       public String getKillStatusName() {
         if(getKilling()){
             return "秒杀中";
         }else if(new Date().getTime() < startTime.getTime()) {
             return "秒杀未开始";
         }else {
             return "秒杀已结束";
         }
       }


    @Override
    protected Serializable pkVal() {
        return this.id;
    }


}
